package cn.zhaoyuening.hnistalumnirecord.service;

import cn.zhaoyuening.hnistalumnirecord.domain.News;
import cn.zhaoyuening.hnistalumnirecord.utils.JsonDataGridData;

import java.io.Serializable;
import java.util.List;

/**
 * Created by zhao on 17-1-17.
 */
public interface NewsService extends BaseService<News> {

    /**
     * 通过module id 来获取news 按发表时间排序
     * @param moduleId 模块id
     * @param pageSize 获取的条数 如果amount值小于0 则获取该module所有的news
     * @return 获取的news列表
     */
    List<News> findByModuleId(Serializable moduleId, int pageNumber, int pageSize);

    long getTotalRecordByModuleId(Serializable id);

    /**
     * 高级查询
     * @param selectModule 选择的模块id -1为查询所有模块
     * @param selectTitle 选择查询的文章标题包含字符串
     * @param startIndex 分页 起始索引
     * @param pageSize 分页 分页大小
     * @return 返回jsonDataGridData对象 包含查询返回的新闻列表 与 符合条件总数
     */
    JsonDataGridData findByAdvancedQuery(Integer selectModule, String selectTitle, int startIndex, int pageSize);

    /**
     * 更新置顶级别
     * @param id news id
     * @param orderCount 置顶级别 普通级别为1 置后级别为0 置顶最高级10
     */
    void updateOrderCountById(Integer id, Integer orderCount);

    /**
     * 保存news对象，同时创建其索引
     * @param news 被保存的news
     */
    void save(News news);

    /**
     * 删除news对象，同时删除其索引
     * @param news 被删除的news
     */
    void delete(News news);

    /**
     * 通过索引搜索
     * @param searchContent
     * @return
     */
    List<News> search(String searchContent);
}
